const Joi = require('joi')
/**
 * string() 值必须是字符串
 * alphanum() 值只能是包含 a-zA-Z0-9 的字符串
 * min(length) 最小长度
 * max(length) 最大长度
 * required() 值是必填项，不能为 undefined
 * pattern(正则表达式) 值必须符合正则表达式的规则
 */

// 用户名的验证规则
const username =  Joi.string().alphanum().min(3).max(12).required()
// 密码的验证规则
const password = Joi.string().pattern(/^[\S]{6,12}$/).required()
//  定义 id, nickname, emial 的验证规则
const id = Joi.number().integer().min(1).required()
const nickname = Joi.string().required()
const email = Joi.string().email().required()
// 验证头像
// dataUri() 指的是如下格式的字符串数据：
// 测试：
const avatar = Joi.string().dataUri().required()





// 注册和登录表单的验证规则对象
exports.login_reguser_scheme = {
	// 表示需要对 req.body 中的数据进行验证
	body:{
		username,
		password
	}
}

// 更新表单的验证规则对象
exports.update_userinfo_schema = {
	// 表示需要对 req.body 中的数据进行验证
	body:{
		id,
		nickname,
		email
	}
}

// 验证密码
exports.update_password_schema = {
	// 表示需要对 req.body 中的数据进行验证
	body:{
		oldPwd:password,
		// joi.not(joi.ref('oldPwd')) 表示 newPwd 的值不能等于 oldPwd 的值
		// .concat() 用于合并 joi.not(joi.ref('oldPwd')) 和 password 这两条验证规则
		newPwd:Joi.not(Joi.ref('oldPwd')).concat(password)  //新密码和旧密码的值都要符合password的规则，并且新旧密码不能一样
	}
}

// 验证头像
exports.update_avatar_schema = {
	body:{
		avatar
	}
}

